import axios,{type Method} from "axios"; 
import { useUserStore } from "@/stores/user";
import { showToast } from "vant";
import router from "@/router";

const baseURL = 'https://consult-api.itheima.net/'   //基地址
const instance = axios.create({
    baseURL,
    timeout: 5000
})


instance.interceptors.request.use(
    (config) => {
        const store = useUserStore()

      // TODO 2. 携带token
        if (store.user?.token) {  //如果没有token 就把请求头里的Authorization字段存为token(注入Token)
            config.headers.Authorization = store.user.token
        }
      return config
    },
    (err) => Promise.reject(err)
  )
  
  instance.interceptors.response.use(
    (res) => {
      // TODO 3. 处理业务失败  
      if (res.data?.code !== 10000) {
            // 请求成功，数据失败
            showToast({
              message: res.data?.message || '请求失败',
              icon:'none'
            })
        return Promise.reject()
          }
      // TODO 4.完全成功 摘取核心响应数据
      return res.data
    },
    (err) => {
      // TODO 5. 处理401错误
      if (err.response.status === 401) {
        // token失效 跳到登录页
        // 删除用户信息
        const store = useUserStore()
        store.delUser()
        // 跳转登录，带上接口失效所在页面的地址，登录完成后回跳使用
        router.push({
          path: '/login',
          query: { returnUrl: router.currentRoute.value.fullPath }
        })
      }
      return Promise.reject(err)
    }
  )

export {
    
    baseURL,
    instance
  }